<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><script type="text/javascript" src="https://cdn.jsdelivr.net/gh/opencobra/cobratoolbox@ffa0229fc0c01c9236bb7e961f65712443277719/latest/_static/js/iframeResizer.contentWindow.min.js"></script><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,IE=9,chrome=1"><meta name="generator" content="MATLAB 2021a"><title>OptKnock Tutorial</title><style type="text/css">.rtcContent { padding: 30px; } .S0 { margin: 3px 10px 5px 4px; padding: 0px; line-height: 28.8px; min-height: 0px; white-space: normal; color: rgb(213, 80, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 24px; font-weight: normal; text-align: left;  }
.S1 { margin: 20px 10px 5px 4px; padding: 0px; line-height: 20px; min-height: 0px; white-space: normal; color: rgb(60, 60, 60); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 20px; font-weight: bold; text-align: left;  }
.S2 { margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: normal; text-align: left;  }
.S3 { margin: 3px 10px 5px 4px; padding: 0px; line-height: 20px; min-height: 0px; white-space: normal; color: rgb(60, 60, 60); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 20px; font-weight: bold; text-align: left;  }
.S4 { margin: 10px 0px 20px; padding-left: 0px; font-family: Helvetica, Arial, sans-serif; font-size: 14px;  }
.S5 { margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: normal;  }
.CodeBlock { background-color: #F7F7F7; margin: 10px 0 10px 0;}
.S6 { border-left: 1px solid rgb(233, 233, 233); border-right: 1px solid rgb(233, 233, 233); border-top: 1px solid rgb(233, 233, 233); border-bottom: 0px none rgb(0, 0, 0); border-radius: 4px 4px 0px 0px; padding: 6px 45px 0px 13px; line-height: 17.234px; min-height: 18px; white-space: nowrap; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px;  }
.S7 { border-left: 1px solid rgb(233, 233, 233); border-right: 1px solid rgb(233, 233, 233); border-top: 0px none rgb(0, 0, 0); border-bottom: 0px none rgb(0, 0, 0); border-radius: 0px; padding: 0px 45px 0px 13px; line-height: 17.234px; min-height: 18px; white-space: nowrap; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px;  }
.S8 { border-left: 1px solid rgb(233, 233, 233); border-right: 1px solid rgb(233, 233, 233); border-top: 0px none rgb(0, 0, 0); border-bottom: 1px solid rgb(233, 233, 233); border-radius: 0px; padding: 0px 45px 4px 13px; line-height: 17.234px; min-height: 18px; white-space: nowrap; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px;  }
.S9 { color: rgb(64, 64, 64); padding: 10px 0px 6px 17px; background: rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px; overflow-x: hidden; line-height: 17.234px;  }
/* Styling that is common to warnings and errors is in diagnosticOutput.css */.embeddedOutputsErrorElement {    min-height: 18px;    max-height: 250px;    overflow: auto;}
.embeddedOutputsErrorElement.inlineElement {}
.embeddedOutputsErrorElement.rightPaneElement {}
/* Styling that is common to warnings and errors is in diagnosticOutput.css */.embeddedOutputsWarningElement{    min-height: 18px;    max-height: 250px;    overflow: auto;}
.embeddedOutputsWarningElement.inlineElement {}
.embeddedOutputsWarningElement.rightPaneElement {}
/* Copyright 2015-2019 The MathWorks, Inc. *//* In this file, styles are not scoped to rtcContainer since they could be in the Dojo Tooltip */.diagnosticMessage-wrapper {    font-family: Menlo, Monaco, Consolas, "Courier New", monospace;    font-size: 12px;}
.diagnosticMessage-wrapper.diagnosticMessage-warningType {    color: rgb(255,100,0);}
.diagnosticMessage-wrapper.diagnosticMessage-warningType a {    color: rgb(255,100,0);    text-decoration: underline;}
.diagnosticMessage-wrapper.diagnosticMessage-errorType {    color: rgb(230,0,0);}
.diagnosticMessage-wrapper.diagnosticMessage-errorType a {    color: rgb(230,0,0);    text-decoration: underline;}
.diagnosticMessage-wrapper .diagnosticMessage-messagePart,.diagnosticMessage-wrapper .diagnosticMessage-causePart {    white-space: normal;}
.diagnosticMessage-wrapper .diagnosticMessage-stackPart {    white-space: normal;}
.embeddedOutputsTextElement,.embeddedOutputsVariableStringElement {    white-space: normal;    word-wrap:  initial;    min-height: 18px;    max-height: 250px;    overflow: auto;}
.textElement,.rtcDataTipElement .textElement {    padding-top: 3px;}
.embeddedOutputsTextElement.inlineElement,.embeddedOutputsVariableStringElement.inlineElement {}
.inlineElement .textElement {}
.embeddedOutputsTextElement.rightPaneElement,.embeddedOutputsVariableStringElement.rightPaneElement {    min-height: 16px;}
.rightPaneElement .textElement {    padding-top: 2px;    padding-left: 9px;}
.S10 { border-left: 1px solid rgb(233, 233, 233); border-right: 1px solid rgb(233, 233, 233); border-top: 1px solid rgb(233, 233, 233); border-bottom: 0px none rgb(0, 0, 0); border-radius: 0px; padding: 6px 45px 0px 13px; line-height: 17.234px; min-height: 18px; white-space: nowrap; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px;  }
.S11 { border-left: 1px solid rgb(233, 233, 233); border-right: 1px solid rgb(233, 233, 233); border-top: 0px none rgb(0, 0, 0); border-bottom: 1px solid rgb(233, 233, 233); border-radius: 0px 0px 4px 4px; padding: 0px 45px 4px 13px; line-height: 17.234px; min-height: 18px; white-space: nowrap; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px;  }
.S12 { margin: 10px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: normal; text-align: left;  }
.S13 { border-left: 1px solid rgb(233, 233, 233); border-right: 1px solid rgb(233, 233, 233); border-top: 1px solid rgb(233, 233, 233); border-bottom: 1px solid rgb(233, 233, 233); border-radius: 4px; padding: 6px 45px 4px 13px; line-height: 17.234px; min-height: 18px; white-space: nowrap; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px;  }
.S14 { border-left: 1px solid rgb(233, 233, 233); border-right: 1px solid rgb(233, 233, 233); border-top: 1px solid rgb(233, 233, 233); border-bottom: 1px solid rgb(233, 233, 233); border-radius: 4px 4px 0px 0px; padding: 6px 45px 4px 13px; line-height: 17.234px; min-height: 18px; white-space: nowrap; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px;  }
.S15 { border-left: 1px solid rgb(233, 233, 233); border-right: 1px solid rgb(233, 233, 233); border-top: 1px solid rgb(233, 233, 233); border-bottom: 1px solid rgb(233, 233, 233); border-radius: 0px 0px 4px 4px; padding: 6px 45px 4px 13px; line-height: 17.234px; min-height: 18px; white-space: nowrap; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px;  }</style></head><body><div class = rtcContent><h1  class = 'S0'><span>OptKnock Tutorial</span></h1><h2  class = 'S1'><span>Author: Sebastián N. Mendoza,  Center for Mathematical Modeling, University of Chile. snmendoz@uc.cl</span></h2><h2  class = 'S1'><span style=' font-weight: bold;'>Reviewer(s): Thomas Pfau, Sylvian Arreckx, Laurent Heirendt, Ronan Fleming, John Sauls, Anne Richelle</span></h2><h2  class = 'S1'><span style=' font-weight: bold;'>INTRODUCTION:</span></h2><div  class = 'S2'><span>OptKnock is an algorithm suggesting the genetic manipulation that lead to the overproduction of a specified metabolite [1]. Opknock pinpoints which set of reactions to to remove (i.e. delettion of the genes associated to these reactions) from a metabolic network to obtain a mutant that will produce a particular target of interest at a higher rate than the wild-type strain. </span></div><div  class = 'S2'><span>For example, imagine that we would like to increase the production of succinate or lactate in</span><span style=' font-style: italic;'> Escherichia coli</span><span>. Which are the knock-outs needed to increase the production of these products? We will approach these problems in this tutorial.</span></div><h2  class = 'S3'><span>MATERIALS &amp; EQUIPMENT</span></h2><ol  class = 'S4'><li  class = 'S5'><span>MATLAB</span></li><li  class = 'S5'><span>A solver for Mixed Integer Linear Programming (MILP) problems.Use changeCobraSolver to choose the solver for MILP problems (e.g., Gurobi).</span></li></ol><h2  class = 'S3'><span>PROCEDURE</span></h2><div  class = 'S2'><span>The proceduce consists on the following steps: </span></div><div  class = 'S2'><span>1) Constrain the model.</span></div><div  class = 'S2'><span>2) Define the set of reactions that will be used to search knockouts. Note : only reactions in this set will be deleted. </span></div><div  class = 'S2'><span>3) Define the number of reactions to be deleted, the target reaction and some constraints to be accomplish.</span></div><div  class = 'S2'><span>4) Run optKnock. </span></div><div  class = 'S2'><span style=' font-weight: bold;'>TIMING: </span><span>This task should take from a few seconds to a few hours depending on the size of your reconstruction.</span></div><div  class = 'S2'><span>Verify that cobratoolbox has been initialized and that the solver has been set.</span></div><div class="CodeBlock"><div class="inlineWrapper"><div  class = 'S6'><span style="white-space: normal"><span style="color: rgb(14, 0, 255);">global </span><span >TUTORIAL_INIT_CB;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(14, 0, 255);">if </span><span >~isempty(TUTORIAL_INIT_CB) &amp;&amp; TUTORIAL_INIT_CB==1</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    initCobraToolbox(false) </span><span style="color: rgb(2, 128, 9);">% false, as we don't want to update</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'></div></div><div class="inlineWrapper outputs"><div  class = 'S8'><span style="white-space: normal"><span >changeCobraSolver(</span><span style="color: rgb(170, 4, 249);">'gurobi'</span><span >,</span><span style="color: rgb(170, 4, 249);">'all'</span><span >);</span></span></div><div  class = 'S9'><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="A4D441DF" data-testid="output_0" data-width="420" data-height="171" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> &gt; Gurobi interface added to MATLAB path.
 &gt; Solver for LP problems has been set to gurobi.

 &gt; Gurobi interface added to MATLAB path.
 &gt; Solver for MILP problems has been set to gurobi.

 &gt; Gurobi interface added to MATLAB path.
 &gt; Solver for QP problems has been set to gurobi.

 &gt; Gurobi interface added to MATLAB path.
 &gt; Solver for MIQP problems has been set to gurobi.
 &gt; Solver gurobi not supported for problems of type NLP. No solver set for this problemtype </div></div></div></div><div class="inlineWrapper"><div  class = 'S10'><span style="white-space: normal"><span >fullPath = which(</span><span style="color: rgb(170, 4, 249);">'tutorial_optKnock'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >folder = fileparts(fullPath);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >currectDirectory = pwd;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >cd(folder);</span></span></div></div><div class="inlineWrapper"><div  class = 'S11'></div></div></div><div  class = 'S2'><span>Load the model of E. coli [2].</span></div><div class="CodeBlock"><div class="inlineWrapper"><div  class = 'S6'><span style="white-space: normal"><span >modelFileName = </span><span style="color: rgb(170, 4, 249);">'iJO1366.mat'</span><span >;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >modelDirectory = getDistributedModelFolder(modelFileName); </span><span style="color: rgb(2, 128, 9);">%Look up the folder for the distributed Models.</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >modelFileName= [modelDirectory filesep modelFileName]; </span><span style="color: rgb(2, 128, 9);">% Get the full path. Necessary to be sure, that the right model is loaded</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >model = readCbModel(modelFileName);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'></div></div><div class="inlineWrapper"><div  class = 'S11'><span style="white-space: normal"><span >biomass = </span><span style="color: rgb(170, 4, 249);">'BIOMASS_Ec_iJO1366_core_53p95M'</span><span >;</span></span></div></div></div><div  class = 'S12'><span>Define the maximum number of solutions to find (i.e., maximum number of remvable reactions that lead to the overproduction of the metabolite of interest)</span></div><div class="CodeBlock"><div class="inlineWrapper"><div  class = 'S13'><span style="white-space: normal"><span >threshold = 5;</span></span></div></div></div><div  class = 'S12'><span>Define the set of reactions that will be used to search knockouts. Note : only reactions in this set will be deleted</span></div><div class="CodeBlock"><div class="inlineWrapper"><div  class = 'S6'><span style="white-space: normal"><span >selectedRxnList = {</span><span style="color: rgb(170, 4, 249);">'GLCabcpp'</span><span >; </span><span style="color: rgb(170, 4, 249);">'GLCptspp'</span><span >; </span><span style="color: rgb(170, 4, 249);">'HEX1'</span><span >; </span><span style="color: rgb(170, 4, 249);">'PGI'</span><span >; </span><span style="color: rgb(170, 4, 249);">'PFK'</span><span >; </span><span style="color: rgb(170, 4, 249);">'FBA'</span><span >; </span><span style="color: rgb(170, 4, 249);">'TPI'</span><span >; </span><span style="color: rgb(170, 4, 249);">'GAPD'</span><span >; </span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                   </span><span style="color: rgb(170, 4, 249);">'PGK'</span><span >; </span><span style="color: rgb(170, 4, 249);">'PGM'</span><span >; </span><span style="color: rgb(170, 4, 249);">'ENO'</span><span >; </span><span style="color: rgb(170, 4, 249);">'PYK'</span><span >; </span><span style="color: rgb(170, 4, 249);">'LDH_D'</span><span >; </span><span style="color: rgb(170, 4, 249);">'PFL'</span><span >; </span><span style="color: rgb(170, 4, 249);">'ALCD2x'</span><span >; </span><span style="color: rgb(170, 4, 249);">'PTAr'</span><span >; </span><span style="color: rgb(170, 4, 249);">'ACKr'</span><span >; </span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                   </span><span style="color: rgb(170, 4, 249);">'G6PDH2r'</span><span >; </span><span style="color: rgb(170, 4, 249);">'PGL'</span><span >; </span><span style="color: rgb(170, 4, 249);">'GND'</span><span >; </span><span style="color: rgb(170, 4, 249);">'RPI'</span><span >; </span><span style="color: rgb(170, 4, 249);">'RPE'</span><span >; </span><span style="color: rgb(170, 4, 249);">'TKT1'</span><span >; </span><span style="color: rgb(170, 4, 249);">'TALA'</span><span >; </span><span style="color: rgb(170, 4, 249);">'TKT2'</span><span >; </span><span style="color: rgb(170, 4, 249);">'FUM'</span><span >; </span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                   </span><span style="color: rgb(170, 4, 249);">'FRD2'</span><span >; </span><span style="color: rgb(170, 4, 249);">'SUCOAS'</span><span >; </span><span style="color: rgb(170, 4, 249);">'AKGDH'</span><span >; </span><span style="color: rgb(170, 4, 249);">'ACONTa'</span><span >; </span><span style="color: rgb(170, 4, 249);">'ACONTb'</span><span >; </span><span style="color: rgb(170, 4, 249);">'ICDHyr'</span><span >; </span><span style="color: rgb(170, 4, 249);">'CS'</span><span >; </span><span style="color: rgb(170, 4, 249);">'MDH'</span><span >; </span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                   </span><span style="color: rgb(170, 4, 249);">'MDH2'</span><span >; </span><span style="color: rgb(170, 4, 249);">'MDH3'</span><span >; </span><span style="color: rgb(170, 4, 249);">'ACALD'</span><span >};</span></span></div></div><div class="inlineWrapper"><div  class = 'S11'></div></div></div><div  class = 'S12'><span>Constraint the model with biological assumptions</span></div><div class="CodeBlock"><div class="inlineWrapper"><div  class = 'S6'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% prespecified amount of glucose uptake 10 mmol/grDW*hr</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >model = changeRxnBounds(model, </span><span style="color: rgb(170, 4, 249);">'EX_glc__D_e'</span><span >, -10, </span><span style="color: rgb(170, 4, 249);">'b'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% Unconstrained uptake routes for inorganic phosphate, sulfate and</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% ammonia</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >Exchange={</span><span style="color: rgb(170, 4, 249);">'EX_o2_e'</span><span >;</span><span style="color: rgb(170, 4, 249);">'EX_pi_e'</span><span >;</span><span style="color: rgb(170, 4, 249);">'EX_so4_e'</span><span >; </span><span style="color: rgb(170, 4, 249);">'EX_nh4_e'</span><span >};</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >Bounds=[0;-1000;-1000;-1000];</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >model = changeRxnBounds(model, Exchange, Bounds, </span><span style="color: rgb(170, 4, 249);">'l'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% Enable secretion routes  for acetate, carbon dioxide, ethanol, formate, lactate</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% and succinate</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >Exchange={</span><span style="color: rgb(170, 4, 249);">'EX_ac_e'</span><span >;</span><span style="color: rgb(170, 4, 249);">'EX_co2_e'</span><span >;</span><span style="color: rgb(170, 4, 249);">'EX_etoh_e'</span><span >;</span><span style="color: rgb(170, 4, 249);">'EX_for_e'</span><span >;</span><span style="color: rgb(170, 4, 249);">'EX_lac__D_e'</span><span >;</span><span style="color: rgb(170, 4, 249);">'EX_succ_e'</span><span >};</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >Bounds=[1000;1000;1000;1000;1000;1000];</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >model = changeRxnBounds(model, Exchange, Bounds, </span><span style="color: rgb(170, 4, 249);">'u'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% Constrain the phosphotransferase system</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >model = changeRxnBounds(model, </span><span style="color: rgb(170, 4, 249);">'GLCabcpp'</span><span >, -1000, </span><span style="color: rgb(170, 4, 249);">'l'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >model = changeRxnBounds(model, </span><span style="color: rgb(170, 4, 249);">'GLCptspp'</span><span >, -1000, </span><span style="color: rgb(170, 4, 249);">'l'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >model = changeRxnBounds(model, </span><span style="color: rgb(170, 4, 249);">'GLCabcpp'</span><span >, 1000, </span><span style="color: rgb(170, 4, 249);">'u'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >model = changeRxnBounds(model, </span><span style="color: rgb(170, 4, 249);">'GLCptspp'</span><span >, 1000, </span><span style="color: rgb(170, 4, 249);">'u'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >model = changeRxnBounds(model, </span><span style="color: rgb(170, 4, 249);">'GLCt2pp'</span><span >, 0, </span><span style="color: rgb(170, 4, 249);">'b'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S11'></div></div></div><div  class = 'S12'><span>Then, calculates the production of metabolites before running optKnock.</span></div><div class="CodeBlock"><div class="inlineWrapper"><div  class = 'S6'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% determine succinate production and growth rate</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >fbaWT = optimizeCbModel(model);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >succFluxWT = fbaWT.x(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_succ_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >etohFluxWT = fbaWT.x(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_etoh_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >formFluxWT = fbaWT.x(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_for_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >lactFluxWT = fbaWT.x(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_lac__D_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >acetFluxWT = fbaWT.x(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_ac_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >growthRateWT = fbaWT.f;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >fprintf(</span><span style="color: rgb(170, 4, 249);">'The production of succinate before optimization is %.1f \n'</span><span >, succFluxWT);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >fprintf(</span><span style="color: rgb(170, 4, 249);">'The growth rate before optimization is %.1f \n'</span><span >, growthRateWT);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >fprintf([</span><span style="color: rgb(170, 4, 249);">'The production of other products such as ethanol, formate, lactate and'</span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >         </span><span style="color: rgb(170, 4, 249);">'acetate are %.1f, %.1f, %.1f and %.1f, respectively. \n'</span><span >], </span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S11'><span style="white-space: normal"><span >        etohFluxWT, formFluxWT, lactFluxWT, acetFluxWT);</span></span></div></div></div><div  class = 'S2'><span style=' font-weight: bold;'>I) EXAM</span><span style=' font-weight: bold;'>PLE</span><span style=' font-weight: bold;'> 1 : SUCCINATE</span><span style=' font-weight: bold;'> OVERPRODUCTION</span></div><div  class = 'S2'><span style=' font-weight: bold;'>Aim:</span><span> </span><span style=' font-weight: bold;'>finding optKnock reaction</span><span style=' font-weight: bold;'>s sets of size 2 for increasing production of succinate</span></div><div class="CodeBlock"><div class="inlineWrapper outputs"><div  class = 'S14'><span style="white-space: normal"><span >fprintf(</span><span style="color: rgb(170, 4, 249);">'\n...EXAMPLE 1: Finding optKnock sets of size 2 or less...\n\n'</span><span >)</span></span></div><div  class = 'S9'><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="E15EDC0D" data-testid="output_1" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...EXAMPLE 1: Finding optKnock sets of size 2 or less...</div></div></div></div><div class="inlineWrapper"><div  class = 'S10'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% Set optKnock options</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% The exchange of succinate will be the objective of the outer problem</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >options = struct(</span><span style="color: rgb(170, 4, 249);">'targetRxn'</span><span >, </span><span style="color: rgb(170, 4, 249);">'EX_succ_e'</span><span >, </span><span style="color: rgb(170, 4, 249);">'numDel'</span><span >, 2);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% We will impose that biomass be at least 50% of the biomass of wild-type</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >constrOpt = struct(</span><span style="color: rgb(170, 4, 249);">'rxnList'</span><span >, {{biomass}},</span><span style="color: rgb(170, 4, 249);">'values'</span><span >, 0.5*fbaWT.f, </span><span style="color: rgb(170, 4, 249);">'sense'</span><span >, </span><span style="color: rgb(170, 4, 249);">'G'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% We will try to find 10 optKnock sets of a maximun length of 2</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >previousSolutions = cell(10, 1);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >contPreviousSolutions = 1;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >nIter = 1;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(14, 0, 255);">while </span><span >nIter &lt; threshold</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    fprintf(</span><span style="color: rgb(170, 4, 249);">'...Performing optKnock analysis...\n'</span><span >)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">if </span><span >isempty(previousSolutions{1})</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        optKnockSol = OptKnock(model, selectedRxnList, options, constrOpt);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">else</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        optKnockSol = OptKnock(model, selectedRxnList, options, constrOpt, previousSolutions, 1);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(2, 128, 9);">% determine succinate production and growth rate after optimization</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    succFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_succ_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    growthRateM1 = optKnockSol.fluxes(strcmp(model.rxns, biomass));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    etohFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_etoh_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    formFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_for_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    lactFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_lac__D_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    acetFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_ac_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    setM1 = optKnockSol.rxnList;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">if </span><span >~isempty(setM1)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        previousSolutions{contPreviousSolutions} = setM1;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        contPreviousSolutions = contPreviousSolutions + 1;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(2, 128, 9);">%printing results</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'optKnock found a optKnock set of large %d composed by '</span><span >, length(setM1));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">for </span><span >j = 1:length(setM1)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            </span><span style="color: rgb(14, 0, 255);">if </span><span >j == 1</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                fprintf(</span><span style="color: rgb(170, 4, 249);">'%s'</span><span >, setM1{j});</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            </span><span style="color: rgb(14, 0, 255);">elseif </span><span >j == length(setM1)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                fprintf(</span><span style="color: rgb(170, 4, 249);">' and %s'</span><span >, setM1{j});</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            </span><span style="color: rgb(14, 0, 255);">else</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                fprintf(</span><span style="color: rgb(170, 4, 249);">', %s'</span><span >, setM1{j});</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'\n'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'The production of succinate after optimization is %.2f \n'</span><span >, succFluxM1);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'The growth rate after optimization is %.2f \n'</span><span >, growthRateM1);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf([</span><span style="color: rgb(170, 4, 249);">'The production of other products such as ethanol, formate, lactate and acetate are' </span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                 </span><span style="color: rgb(170, 4, 249);">'%.1f, %.1f, %.1f and %.1f, respectively. \n'</span><span >], etohFluxM1, formFluxM1, lactFluxM1, acetFluxM1);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'...Performing coupling analysis...\n'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        [type, maxGrowth, maxProd, minProd] = analyzeOptKnock(model, setM1, </span><span style="color: rgb(170, 4, 249);">'EX_succ_e'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'The solution is of type: %s\n'</span><span >, type);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'The maximun growth rate given the optKnock set is %.2f\n'</span><span >, maxGrowth);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf([</span><span style="color: rgb(170, 4, 249);">'The maximun and minimun production of succinate given the optKnock set is ' </span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                 </span><span style="color: rgb(170, 4, 249);">'%.2f and %.2f, respectively \n\n'</span><span >], minProd, maxProd);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">if </span><span >strcmp(type, </span><span style="color: rgb(170, 4, 249);">'growth coupled'</span><span >)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            singleProductionEnvelope(model, setM1, </span><span style="color: rgb(170, 4, 249);">'EX_succ_e'</span><span >, biomass, </span><span style="color: rgb(170, 4, 249);">'savePlot'</span><span >, 1, </span><span style="color: rgb(170, 4, 249);">'showPlot'</span><span >, 1, </span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                                     </span><span style="color: rgb(170, 4, 249);">'fileName'</span><span >, [</span><span style="color: rgb(170, 4, 249);">'succ_ex1_' </span><span >num2str(nIter)], </span><span style="color: rgb(170, 4, 249);">'outputFolder'</span><span >, </span><span style="color: rgb(170, 4, 249);">'OptKnockResults'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">end</span><span >,</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">else</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">if </span><span >nIter == 1</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            fprintf(</span><span style="color: rgb(170, 4, 249);">'optKnock was not able to found an optKnock set\n'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">else</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            fprintf(</span><span style="color: rgb(170, 4, 249);">'optKnock was not able to found additional optKnock sets\n'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">break</span><span >;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    nIter = nIter + 1;</span></span></div></div><div class="inlineWrapper outputs"><div  class = 'S8'><span style="white-space: normal"><span style="color: rgb(14, 0, 255);">end</span></span></div><div  class = 'S9'><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="800FCE6B" data-testid="output_2" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing optKnock analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="10E77E1B" data-testid="output_3" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">optKnock found a optKnock set of large 2 composed by </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="540A8AA0" data-testid="output_4" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">PFL</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="B2A35515" data-testid="output_5" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> and RPI</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="DBD1F922" data-testid="output_6" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of succinate after optimization is 2.75 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="EE753560" data-testid="output_7" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The growth rate after optimization is 0.14 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="9F19B5D2" data-testid="output_8" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of other products such as ethanol, formate, lactate and acetate are9.4, 0.0, -0.0 and 0.0, respectively. </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="BC07E6FD" data-testid="output_9" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing coupling analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="CF2D2CE4" data-testid="output_10" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The solution is of type: growth coupled non unique</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="D58CA2A7" data-testid="output_11" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun growth rate given the optKnock set is 0.12</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="B1F290DD" data-testid="output_12" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun and minimun production of succinate given the optKnock set is 0.04 and 2.31, respectively </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="0DDA0741" data-testid="output_13" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing optKnock analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="B9867BA6" data-testid="output_14" data-width="420" data-height="549" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">MILP problem with 8398 constraints 63 integer variables and 8370 continuous variables
Optimize a model with 8398 rows, 8370 columns and 34671 nonzeros
Variable types: 8307 continuous, 63 integer (63 binary)
Coefficient statistics:
  Matrix range     [2e-06, 1e+03]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+03]
  RHS range        [1e-02, 1e+03]
Presolve removed 5079 rows and 3321 columns
Presolve time: 0.09s
Presolved: 3319 rows, 5049 columns, 21617 nonzeros
Variable types: 5012 continuous, 37 integer (37 binary)

Root relaxation: objective 1.230321e+01, 4944 iterations, 0.64 seconds

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

     0     0   12.30321    0    2          -   12.30321      -     -    1s
H    0     0                       0.0915893   12.30321      -     -    1s
     0     0   12.30321    0    2    0.09159   12.30321      -     -    1s
     0     2   12.30321    0    2    0.09159   12.30321      -     -    1s
*   79    63              25       0.2411614   12.30321  5002%  60.1    1s
*   90    70              24       0.2411614   12.30321  5002%  59.3    2s
*  175    78              21       0.2856919   12.30321  4206%  58.0    2s
*  193    81              26       0.2864668   12.30321  4195%  54.6    2s
*  194    81              26       0.2864668   12.30321  4195%  54.3    2s
*  240   104              21       1.2019176   12.29845   923%  55.5    2s
*  291    87              19       1.4425937   12.28821   752%  58.5    2s
*  303    65              19       1.6792803   12.27798   631%  60.7    3s

Explored 379 nodes (35252 simplex iterations) in 3.71 seconds
Thread count was 8 (of 8 available processors)

Solution count 9: 1.67928 1.44259 1.20192 ... 0.0915893
Pool objective bound 1.67928

Optimal solution found (tolerance 1.00e-12)
Best objective 1.679280339834e+00, best bound 1.679280339834e+00, gap 0.0000%</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="28E0385B" data-testid="output_15" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">optKnock found a optKnock set of large 2 composed by </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="B4F6D630" data-testid="output_16" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">PFL</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="29ACE447" data-testid="output_17" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> and TKT2</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="25825153" data-testid="output_18" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of succinate after optimization is 1.68 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="DAF5FE3F" data-testid="output_19" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The growth rate after optimization is 0.22 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="EA76ADA0" data-testid="output_20" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of other products such as ethanol, formate, lactate and acetate are14.9, 0.0, 0.0 and -0.0, respectively. </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="B3172E37" data-testid="output_21" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing coupling analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="7412ECF6" data-testid="output_22" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The solution is of type: growth coupled non unique</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="439E1195" data-testid="output_23" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun growth rate given the optKnock set is 0.18</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="569E8684" data-testid="output_24" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun and minimun production of succinate given the optKnock set is 0.06 and 1.41, respectively </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="57D3176E" data-testid="output_25" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing optKnock analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="22110C80" data-testid="output_26" data-width="420" data-height="493" data-hashorizontaloverflow="true" style="width: 450px; max-height: 504px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">MILP problem with 8399 constraints 63 integer variables and 8370 continuous variables
Optimize a model with 8399 rows, 8370 columns and 34674 nonzeros
Variable types: 8307 continuous, 63 integer (63 binary)
Coefficient statistics:
  Matrix range     [2e-06, 1e+03]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+03]
  RHS range        [1e-02, 1e+03]
Presolve removed 5079 rows and 3321 columns
Presolve time: 0.10s
Presolved: 3320 rows, 5049 columns, 21619 nonzeros
Variable types: 5012 continuous, 37 integer (37 binary)

Root relaxation: objective 1.230321e+01, 5180 iterations, 0.69 seconds

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

     0     0   12.30321    0    2          -   12.30321      -     -    1s
H    0     0                       0.0915893   12.30321      -     -    1s
     0     0   12.30321    0    2    0.09159   12.30321      -     -    1s
     0     2   12.30321    0    2    0.09159   12.30321      -     -    1s
*  174    80              16       0.2864668   12.30321  4195%  53.5    2s
*  245    91              21       1.2019176   12.30321   924%  57.3    2s
*  258    86              22       1.2019176   12.29845   923%  61.1    2s
*  291    53              21       1.4425937   12.27798   751%  68.9    3s

Explored 373 nodes (33379 simplex iterations) in 3.60 seconds
Thread count was 8 (of 8 available processors)

Solution count 5: 1.44259 1.20192 1.20192 ... 0.0915893
Pool objective bound 1.44259

Optimal solution found (tolerance 1.00e-12)
Best objective 1.442593733917e+00, best bound 1.442593733917e+00, gap 0.0000%</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="5790BA3C" data-testid="output_27" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">optKnock found a optKnock set of large 2 composed by </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="F32E224D" data-testid="output_28" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">PFL</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="C73AA8FF" data-testid="output_29" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> and RPE</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="EB6EE00F" data-testid="output_30" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of succinate after optimization is 1.44 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="3E19BE5E" data-testid="output_31" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The growth rate after optimization is 0.22 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="267628FA" data-testid="output_32" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of other products such as ethanol, formate, lactate and acetate are0.0, 0.0, 15.2 and 0.0, respectively. </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="B76D8FC2" data-testid="output_33" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing coupling analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="14399DE6" data-testid="output_34" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The solution is of type: growth coupled non unique</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="20F70DDA" data-testid="output_35" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun growth rate given the optKnock set is 0.18</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="CF72AEA6" data-testid="output_36" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun and minimun production of succinate given the optKnock set is 0.06 and 1.22, respectively </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="B3F83322" data-testid="output_37" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing optKnock analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="A6CDFE5D" data-testid="output_38" data-width="420" data-height="493" data-hashorizontaloverflow="true" style="width: 450px; max-height: 504px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">MILP problem with 8400 constraints 63 integer variables and 8370 continuous variables
Optimize a model with 8400 rows, 8370 columns and 34677 nonzeros
Variable types: 8307 continuous, 63 integer (63 binary)
Coefficient statistics:
  Matrix range     [2e-06, 1e+03]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+03]
  RHS range        [1e-02, 1e+03]
Presolve removed 5079 rows and 3321 columns
Presolve time: 0.09s
Presolved: 3321 rows, 5049 columns, 21621 nonzeros
Variable types: 5012 continuous, 37 integer (37 binary)

Root relaxation: objective 1.230321e+01, 4774 iterations, 0.63 seconds

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

     0     0   12.30321    0    2          -   12.30321      -     -    1s
H    0     0                       0.0915893   12.30321      -     -    1s
     0     0   12.30321    0    2    0.09159   12.30321      -     -    1s
     0     2   12.30321    0    2    0.09159   12.30321      -     -    1s
*   82    63              25       0.2411614   12.30321  5002%  40.6    1s
*   94    71              17       0.2864668   12.30321  4195%  41.6    1s
*  291    75              21       1.2019176   12.29845   923%  55.8    3s

Explored 390 nodes (32387 simplex iterations) in 3.94 seconds
Thread count was 8 (of 8 available processors)

Solution count 4: 1.20192 0.286467 0.241161 0.0915893 
Pool objective bound 1.20192

Optimal solution found (tolerance 1.00e-12)
Warning: max constraint violation (3.1562e-09) exceeds tolerance
Best objective 1.201917633447e+00, best bound 1.201917633447e+00, gap 0.0000%</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="77A1DF58" data-testid="output_39" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">optKnock found a optKnock set of large 2 composed by </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="BB377131" data-testid="output_40" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">PFL</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="8A40FA42" data-testid="output_41" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> and TALA</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="7D0F2AE9" data-testid="output_42" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of succinate after optimization is 1.20 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="5B7B1B4F" data-testid="output_43" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The growth rate after optimization is 0.22 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="165D4172" data-testid="output_44" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of other products such as ethanol, formate, lactate and acetate are15.4, 0.0, -0.0 and 0.0, respectively. </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="C004866C" data-testid="output_45" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing coupling analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="1722DD97" data-testid="output_46" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The solution is of type: growth coupled non unique</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="AF94F7C9" data-testid="output_47" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun growth rate given the optKnock set is 0.19</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="0239CE93" data-testid="output_48" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun and minimun production of succinate given the optKnock set is 0.06 and 1.01, respectively </div></div></div></div></div><div  class = 'S2'><span style=' font-weight: bold;'>II) EXAM</span><span style=' font-weight: bold;'>PLE</span><span style=' font-weight: bold;'> 2: SUCCINATE</span><span style=' font-weight: bold;'> OVERPRODUCTION</span></div><div  class = 'S2'><span style=' font-weight: bold;'>Aim : finding optKnock reactions sets of size 3 for increasing production of succinate</span></div><div class="CodeBlock"><div class="inlineWrapper outputs"><div  class = 'S14'><span style="white-space: normal"><span >fprintf(</span><span style="color: rgb(170, 4, 249);">'\n...EXAMPLE 1: Finding optKnock sets of size 3...\n\n'</span><span >)</span></span></div><div  class = 'S9'><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="20392153" data-testid="output_49" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...EXAMPLE 1: Finding optKnock sets of size 3...</div></div></div></div><div class="inlineWrapper"><div  class = 'S10'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% Set optKnock options</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% The exchange of succinate will be the objective of the outer problem</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >options = struct(</span><span style="color: rgb(170, 4, 249);">'targetRxn'</span><span >, </span><span style="color: rgb(170, 4, 249);">'EX_succ_e'</span><span >, </span><span style="color: rgb(170, 4, 249);">'numDel'</span><span >, 3);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% We will impose that biomass be at least 50% of the biomass of wild-type</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >constrOpt = struct(</span><span style="color: rgb(170, 4, 249);">'rxnList'</span><span >, {{biomass}}, </span><span style="color: rgb(170, 4, 249);">'values'</span><span >, 0.5*fbaWT.f, </span><span style="color: rgb(170, 4, 249);">'sense'</span><span >, </span><span style="color: rgb(170, 4, 249);">'G'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% We will try to find 10 optKnock sets of a maximun length of 3</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >nIter = 1;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(14, 0, 255);">while </span><span >nIter &lt; threshold</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    fprintf(</span><span style="color: rgb(170, 4, 249);">'...Performing optKnock analysis...'</span><span >)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">if </span><span >isempty(previousSolutions{1})</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        optKnockSol = OptKnock(model, selectedRxnList, options, constrOpt);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">else</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        optKnockSol = OptKnock(model, selectedRxnList, options, constrOpt, previousSolutions);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(2, 128, 9);">% determine succinate production and growth rate after optimization</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    succFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_succ_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    growthRateM1 = optKnockSol.fluxes(strcmp(model.rxns, biomass));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    etohFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_etoh_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    formFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_for_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    lactFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_lac__D_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    acetFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_ac_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    setM1 = optKnockSol.rxnList;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">if </span><span >~isempty(setM1)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        previousSolutions{contPreviousSolutions} = setM1;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        contPreviousSolutions=contPreviousSolutions + 1;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(2, 128, 9);">%printing results</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'optKnock found a optKnock set of large %d composed by '</span><span >,length(setM1));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">for </span><span >j = 1:length(setM1)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            </span><span style="color: rgb(14, 0, 255);">if </span><span >j == 1</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                fprintf(</span><span style="color: rgb(170, 4, 249);">'%s'</span><span >,setM1{j});</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            </span><span style="color: rgb(14, 0, 255);">elseif </span><span >j == length(setM1)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                fprintf(</span><span style="color: rgb(170, 4, 249);">' and %s'</span><span >,setM1{j});</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            </span><span style="color: rgb(14, 0, 255);">else</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                fprintf(</span><span style="color: rgb(170, 4, 249);">', %s'</span><span >,setM1{j});</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'\n'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'The production of succinate after optimization is %.2f \n'</span><span >, succFluxM1);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'The growth rate after optimization is %.2f \n'</span><span >, growthRateM1);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf([</span><span style="color: rgb(170, 4, 249);">'The production of other products such as ethanol, formate, lactate and acetate are ' </span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                 </span><span style="color: rgb(170, 4, 249);">'%.1f, %.1f, %.1f and %.1f, respectively. \n'</span><span >], etohFluxM1, formFluxM1, lactFluxM1, acetFluxM1);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'...Performing coupling analysis...\n'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        [type, maxGrowth, maxProd, minProd] = analyzeOptKnock(model, setM1, </span><span style="color: rgb(170, 4, 249);">'EX_succ_e'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'The solution is of type: %s\n'</span><span >, type);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'The maximun growth rate given the optKnock set is %.2f\n'</span><span >, maxGrowth);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf([</span><span style="color: rgb(170, 4, 249);">'The maximun and minimun production of succinate given the optKnock set is ' </span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                 </span><span style="color: rgb(170, 4, 249);">'%.2f and %.2f, respectively \n\n'</span><span >], minProd, maxProd);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">if </span><span >strcmp(type,</span><span style="color: rgb(170, 4, 249);">'growth coupled'</span><span >)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            singleProductionEnvelope(model, setM1, </span><span style="color: rgb(170, 4, 249);">'EX_succ_e'</span><span >, biomass, </span><span style="color: rgb(170, 4, 249);">'savePlot'</span><span >, 1, </span><span style="color: rgb(170, 4, 249);">'showPlot'</span><span >, 1, </span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                                     </span><span style="color: rgb(170, 4, 249);">'fileName'</span><span >, [</span><span style="color: rgb(170, 4, 249);">'succ_ex2_' </span><span >num2str(nIter)], </span><span style="color: rgb(170, 4, 249);">'outputFolder'</span><span >, </span><span style="color: rgb(170, 4, 249);">'OptKnockResults'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">else</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">if </span><span >nIter == 1</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            fprintf(</span><span style="color: rgb(170, 4, 249);">'optKnock was not able to found an optKnock set\n'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">else</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            fprintf(</span><span style="color: rgb(170, 4, 249);">'optKnock was not able to found additional optKnock sets\n'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">break</span><span >;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    nIter = nIter + 1;</span></span></div></div><div class="inlineWrapper outputs"><div  class = 'S8'><span style="white-space: normal"><span style="color: rgb(14, 0, 255);">end</span></span></div><div  class = 'S9'><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="AFDFEEBD" data-testid="output_50" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing optKnock analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="FC529141" data-testid="output_51" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">optKnock found a optKnock set of large 3 composed by </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="AB516BED" data-testid="output_52" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ALCD2x</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="A8373559" data-testid="output_53" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">, LDH_D</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="1620186F" data-testid="output_54" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> and PFL</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="8D339484" data-testid="output_55" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of succinate after optimization is 8.81 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="E764A6D1" data-testid="output_56" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The growth rate after optimization is 0.15 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="607D9C58" data-testid="output_57" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of other products such as ethanol, formate, lactate and acetate are 0.0, 0.0, -0.0 and 1.7, respectively. </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="DA24022E" data-testid="output_58" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing coupling analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="D272E57F" data-testid="output_59" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The solution is of type: growth coupled</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="1E382D70" data-testid="output_60" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun growth rate given the optKnock set is 0.11</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="C4A51CEB" data-testid="output_61" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun and minimun production of succinate given the optKnock set is 9.11 and 9.11, respectively </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="1BEA13FE" data-testid="output_62" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing optKnock analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="758E1BC2" data-testid="output_63" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">optKnock found a optKnock set of large 3 composed by </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="DB32762C" data-testid="output_64" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ACALD</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="4B444ABF" data-testid="output_65" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">, LDH_D</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="659442B9" data-testid="output_66" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> and PFL</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="409CA35A" data-testid="output_67" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of succinate after optimization is 8.81 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="7499A6BD" data-testid="output_68" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The growth rate after optimization is 0.15 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="0E6D887D" data-testid="output_69" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of other products such as ethanol, formate, lactate and acetate are 0.0, 0.0, -0.0 and 4.1, respectively. </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="012B68F7" data-testid="output_70" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing coupling analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="3DEF9EA3" data-testid="output_71" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The solution is of type: growth coupled non unique</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="2686E10F" data-testid="output_72" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun growth rate given the optKnock set is 0.11</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="66835E7C" data-testid="output_73" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun and minimun production of succinate given the optKnock set is 4.23 and 9.11, respectively </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="F4E02666" data-testid="output_74" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing optKnock analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="1EBCFEC6" data-testid="output_75" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">optKnock found a optKnock set of large 2 composed by </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="B7B122E8" data-testid="output_76" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">PFL</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="E07FF62B" data-testid="output_77" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> and TKT1</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="B60AE41E" data-testid="output_78" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of succinate after optimization is 1.20 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="23252CDD" data-testid="output_79" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The growth rate after optimization is 0.22 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="9DF3265A" data-testid="output_80" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of other products such as ethanol, formate, lactate and acetate are 0.0, 0.0, 15.4 and 0.0, respectively. </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="7AEA384B" data-testid="output_81" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing coupling analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="D55CC642" data-testid="output_82" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The solution is of type: growth coupled non unique</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="8E6608B7" data-testid="output_83" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun growth rate given the optKnock set is 0.19</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="27E6E036" data-testid="output_84" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun and minimun production of succinate given the optKnock set is 0.06 and 1.01, respectively </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="D2F1DC73" data-testid="output_85" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing optKnock analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="9F41A1F7" data-testid="output_86" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">optKnock found a optKnock set of large 3 composed by </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="7058B3AC" data-testid="output_87" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ACALD</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="2ECBDF97" data-testid="output_88" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">, ALCD2x</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="2F283025" data-testid="output_89" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> and PFL</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="AC77DE82" data-testid="output_90" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of succinate after optimization is 0.95 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="C5944821" data-testid="output_91" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The growth rate after optimization is 0.22 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="200F988D" data-testid="output_92" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of other products such as ethanol, formate, lactate and acetate are 0.0, 0.0, 15.7 and -0.0, respectively. </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="A992357E" data-testid="output_93" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing coupling analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="A42094D6" data-testid="output_94" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The solution is of type: growth coupled non unique</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="136518F2" data-testid="output_95" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun growth rate given the optKnock set is 0.19</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="62FA7A1F" data-testid="output_96" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun and minimun production of succinate given the optKnock set is 0.06 and 0.80, respectively </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsFigure" uid="80DDA940" data-testid="output_97" style="width: 450px;"><div class="figureElement"><img class="figureImage figureContainingNode" src="" style="width: 560px;"></div></div></div></div></div><div  class = 'S2'><span style=' font-weight: bold;'>III) EXAMPLE 3 : LACTATE OVERPRODUCTION</span></div><div  class = 'S2'><span style=' font-weight: bold;'>Aim: finding optKnock reactions sets of size 3 for increasing production of lactate</span></div><div class="CodeBlock"><div class="inlineWrapper outputs"><div  class = 'S14'><span style="white-space: normal"><span >fprintf(</span><span style="color: rgb(170, 4, 249);">'\n...EXAMPLE 1: Finding optKnock sets of size 3...\n\n'</span><span >)</span></span></div><div  class = 'S9'><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="DFDA4937" data-testid="output_98" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...EXAMPLE 1: Finding optKnock sets of size 3...</div></div></div></div><div class="inlineWrapper"><div  class = 'S10'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% Set optKnock options</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% The exchange of lactate will be the objective of the outer problem</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >options = struct(</span><span style="color: rgb(170, 4, 249);">'targetRxn'</span><span >, </span><span style="color: rgb(170, 4, 249);">'EX_lac__D_e'</span><span >, </span><span style="color: rgb(170, 4, 249);">'numDel'</span><span >, 3);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% We will impose that biomass be at least 50% of the biomass of wild-type</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >constrOpt = struct(</span><span style="color: rgb(170, 4, 249);">'rxnList'</span><span >, {{biomass}}, </span><span style="color: rgb(170, 4, 249);">'values'</span><span >, 0.5*fbaWT.f, </span><span style="color: rgb(170, 4, 249);">'sense'</span><span >, </span><span style="color: rgb(170, 4, 249);">'G'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% We will try to find 10 optKnock sets of a maximun length of 6</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >previousSolutions = cell(100, 1);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >contPreviousSolutions = 1;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >nIter = 1;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(14, 0, 255);">while </span><span >nIter &lt; threshold</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    fprintf(</span><span style="color: rgb(170, 4, 249);">'...Performing optKnock analysis...'</span><span >)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">if </span><span >isempty(previousSolutions{1})</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        optKnockSol = OptKnock(model, selectedRxnList, options, constrOpt);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">else</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        optKnockSol = OptKnock(model, selectedRxnList, options, constrOpt, previousSolutions);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(2, 128, 9);">% determine lactate production and growth rate after optimization</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    lactFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_lac__D_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    growthRateM1 = optKnockSol.fluxes(strcmp(model.rxns, biomass));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    etohFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_etoh_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    formFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_for_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    succFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_succ_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    acetFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_ac_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    setM1 = optKnockSol.rxnList;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">if </span><span >~isempty(setM1)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        previousSolutions{contPreviousSolutions} = setM1;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        contPreviousSolutions=contPreviousSolutions + 1;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(2, 128, 9);">%printing results</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'optKnock found a optKnock set of large %d composed by '</span><span >,length(setM1));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">for </span><span >j = 1:length(setM1)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            </span><span style="color: rgb(14, 0, 255);">if </span><span >j == 1</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                fprintf(</span><span style="color: rgb(170, 4, 249);">'%s'</span><span >, setM1{j});</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            </span><span style="color: rgb(14, 0, 255);">elseif </span><span >j == length(setM1)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                fprintf(</span><span style="color: rgb(170, 4, 249);">' and %s'</span><span >, setM1{j});</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            </span><span style="color: rgb(14, 0, 255);">else</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                fprintf(</span><span style="color: rgb(170, 4, 249);">', %s'</span><span >, setM1{j});</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'\n'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'The production of lactate after optimization is %.2f \n'</span><span >, lactFluxM1);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'The growth rate after optimization is %.2f \n'</span><span >, growthRateM1);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf([</span><span style="color: rgb(170, 4, 249);">'The production of other products such as ethanol, formate, succinate and acetate are ' </span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                 </span><span style="color: rgb(170, 4, 249);">'%.1f, %.1f, %.1f and %.1f, respectively. \n'</span><span >], etohFluxM1, formFluxM1, succFluxM1, acetFluxM1);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'...Performing coupling analysis...\n'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        [type, maxGrowth, maxProd, minProd] = analyzeOptKnock(model, setM1, </span><span style="color: rgb(170, 4, 249);">'EX_lac__D_e'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'The solution is of type: %s\n'</span><span >, type);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'The maximun growth rate given the optKnock set is %.2f\n'</span><span >, maxGrowth);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf([</span><span style="color: rgb(170, 4, 249);">'The maximun and minimun production of lactate given the optKnock set is ' </span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                 </span><span style="color: rgb(170, 4, 249);">'%.2f and %.2f, respectively \n\n'</span><span >], minProd, maxProd);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        singleProductionEnvelope(model, setM1, </span><span style="color: rgb(170, 4, 249);">'EX_lac__D_e'</span><span >, biomass, </span><span style="color: rgb(170, 4, 249);">'savePlot'</span><span >, 1, </span><span style="color: rgb(170, 4, 249);">'showPlot'</span><span >, 1, </span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                                 </span><span style="color: rgb(170, 4, 249);">'fileName'</span><span >, [</span><span style="color: rgb(170, 4, 249);">'lact_ex1_' </span><span >num2str(nIter)], </span><span style="color: rgb(170, 4, 249);">'outputFolder'</span><span >, </span><span style="color: rgb(170, 4, 249);">'OptKnockResults'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">else</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">if </span><span >nIter == 1</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            fprintf(</span><span style="color: rgb(170, 4, 249);">'optKnock was not able to found an optKnock set\n'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">else</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            fprintf(</span><span style="color: rgb(170, 4, 249);">'optKnock was not able to found additional optKnock sets\n'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">break</span><span >;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    nIter = nIter + 1;</span></span></div></div><div class="inlineWrapper outputs"><div  class = 'S8'><span style="white-space: normal"><span style="color: rgb(14, 0, 255);">end</span></span></div><div  class = 'S9'><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="0D870E40" data-testid="output_99" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing optKnock analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="993A76C9" data-testid="output_100" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">optKnock found a optKnock set of large 3 composed by </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="35CAED01" data-testid="output_101" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">GLCabcpp</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="2DC23C8A" data-testid="output_102" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">, PFL</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="428ADFDB" data-testid="output_103" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> and PGI</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="CD2DF397" data-testid="output_104" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of lactate after optimization is 18.13 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="B810C4DB" data-testid="output_105" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The growth rate after optimization is 0.12 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="F3B6B2BB" data-testid="output_106" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of other products such as ethanol, formate, succinate and acetate are 0.0, 0.0, 0.0 and 0.0, respectively. </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="735C1557" data-testid="output_107" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing coupling analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="608DCF1D" data-testid="output_108" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The solution is of type: non unique</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="0A765735" data-testid="output_109" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun growth rate given the optKnock set is 0.08</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="F0C67B9A" data-testid="output_110" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun and minimun production of lactate given the optKnock set is 0.00 and 18.72, respectively </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="4EFC6A10" data-testid="output_111" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing optKnock analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="D67332CD" data-testid="output_112" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">optKnock found a optKnock set of large 2 composed by </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="33547717" data-testid="output_113" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">PFL</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="5F7E9F08" data-testid="output_114" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> and PGI</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="438FCEB6" data-testid="output_115" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of lactate after optimization is 18.13 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="DF590CBF" data-testid="output_116" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The growth rate after optimization is 0.12 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="6F6E2249" data-testid="output_117" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of other products such as ethanol, formate, succinate and acetate are 0.0, 0.0, 0.0 and 0.0, respectively. </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="E2FF0895" data-testid="output_118" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing coupling analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="C7755C21" data-testid="output_119" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The solution is of type: non unique</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="DDA80D5F" data-testid="output_120" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun growth rate given the optKnock set is 0.08</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="F4B79F6A" data-testid="output_121" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun and minimun production of lactate given the optKnock set is 0.00 and 18.72, respectively </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="C042C566" data-testid="output_122" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing optKnock analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="6A5960F6" data-testid="output_123" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">optKnock found a optKnock set of large 3 composed by </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="E7F13F85" data-testid="output_124" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">GND</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="61CB099A" data-testid="output_125" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">, PGI</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="AECE1804" data-testid="output_126" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> and PTAr</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="1C00FF40" data-testid="output_127" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of lactate after optimization is 18.01 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="4E136BA3" data-testid="output_128" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The growth rate after optimization is 0.12 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="A0ECB7F9" data-testid="output_129" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of other products such as ethanol, formate, succinate and acetate are 0.0, 0.6, 0.0 and 0.1, respectively. </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="47F68FF9" data-testid="output_130" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing coupling analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="7609AB46" data-testid="output_131" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The solution is of type: non unique</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="5AAD5CEB" data-testid="output_132" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun growth rate given the optKnock set is 0.09</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="066281B1" data-testid="output_133" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun and minimun production of lactate given the optKnock set is 0.00 and 18.64, respectively </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="3BAD1C19" data-testid="output_134" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing optKnock analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="B8B6114D" data-testid="output_135" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">optKnock found a optKnock set of large 3 composed by </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="A4027471" data-testid="output_136" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ACKr</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="D4381C33" data-testid="output_137" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">, GND</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="C1AF05BD" data-testid="output_138" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> and PGI</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="0BE39298" data-testid="output_139" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of lactate after optimization is 18.01 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="4BE21613" data-testid="output_140" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The growth rate after optimization is 0.12 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="D745A740" data-testid="output_141" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of other products such as ethanol, formate, succinate and acetate are 0.0, 0.6, 0.0 and 0.1, respectively. </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="5A47B7F9" data-testid="output_142" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing coupling analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="3F85F060" data-testid="output_143" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The solution is of type: non unique</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="7ECCEF02" data-testid="output_144" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun growth rate given the optKnock set is 0.09</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="1403CA68" data-testid="output_145" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun and minimun production of lactate given the optKnock set is 0.00 and 18.64, respectively </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsFigure" uid="85E4D3C9" data-testid="output_146" style="width: 450px;"><div class="figureElement"><img class="figureImage figureContainingNode" src="" style="width: 560px;"></div></div><div class="inlineElement eoOutputWrapper embeddedOutputsFigure" uid="60DB0284" data-testid="output_147" style="width: 450px;"><div class="figureElement"><img class="figureImage figureContainingNode" src="" style="width: 560px;"></div></div><div class="inlineElement eoOutputWrapper embeddedOutputsFigure" uid="A27D7982" data-testid="output_148" style="width: 450px;"><div class="figureElement"><img class="figureImage figureContainingNode" src="" style="width: 560px;"></div></div><div class="inlineElement eoOutputWrapper embeddedOutputsFigure" uid="C658E330" data-testid="output_149" style="width: 450px;"><div class="figureElement"><img class="figureImage figureContainingNode" src="" style="width: 560px;"></div></div></div></div></div><div  class = 'S2'><span style=' font-weight: bold;'>IV) EXAMPLE 4 : LACTATE OVERPRODUCTION</span></div><div  class = 'S2'><span style=' font-weight: bold;'>Aim: finding optKnock reactions sets of size 6 for increasing production of lactate</span></div><div class="CodeBlock"><div class="inlineWrapper outputs"><div  class = 'S14'><span style="white-space: normal"><span >fprintf(</span><span style="color: rgb(170, 4, 249);">'...EXAMPLE 3: Finding optKnock sets of size 6...\n'</span><span >)</span></span></div><div  class = 'S9'><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="8651C0BD" data-testid="output_150" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...EXAMPLE 3: Finding optKnock sets of size 6...</div></div></div></div><div class="inlineWrapper"><div  class = 'S10'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% Set optKnock options</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% The exchange of lactate will be the objective of the outer problem</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >options = struct(</span><span style="color: rgb(170, 4, 249);">'targetRxn'</span><span >, </span><span style="color: rgb(170, 4, 249);">'EX_lac__D_e'</span><span >, </span><span style="color: rgb(170, 4, 249);">'numDel'</span><span >, 6);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% We will impose that biomass be at least 50% of the biomass of wild-type</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >constrOpt = struct(</span><span style="color: rgb(170, 4, 249);">'rxnList'</span><span >, {{biomass}}, </span><span style="color: rgb(170, 4, 249);">'values'</span><span >, 0.5*fbaWT.f, </span><span style="color: rgb(170, 4, 249);">'sense'</span><span >, </span><span style="color: rgb(170, 4, 249);">'G'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(2, 128, 9);">% We will try to find 10 optKnock sets of a maximun length of 2</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >nIter = 1;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span style="color: rgb(14, 0, 255);">while </span><span >nIter &lt; threshold</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    fprintf(</span><span style="color: rgb(170, 4, 249);">'...Performing optKnock analysis...'</span><span >)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">if </span><span >isempty(previousSolutions{1})</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        optKnockSol = OptKnock(model, selectedRxnList, options, constrOpt);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">else</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        optKnockSol = OptKnock(model, selectedRxnList, options, constrOpt, previousSolutions);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(2, 128, 9);">% determine lactate production and growth rate after optimization</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    lactFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_lac__D_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    growthRateM1 = optKnockSol.fluxes(strcmp(model.rxns,biomass));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    etohFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_etoh_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    formFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_for_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    succFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_succ_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    acetFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, </span><span style="color: rgb(170, 4, 249);">'EX_ac_e'</span><span >));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    setM1 = optKnockSol.rxnList;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">if </span><span >~isempty(setM1)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        previousSolutions{contPreviousSolutions} = setM1;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        contPreviousSolutions = contPreviousSolutions + 1;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(2, 128, 9);">%printing results</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'optKnock found a optKnock set of large %d composed by '</span><span >, length(setM1));</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">for </span><span >j = 1:length(setM1)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            </span><span style="color: rgb(14, 0, 255);">if </span><span >j == 1</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                fprintf(</span><span style="color: rgb(170, 4, 249);">'%s'</span><span >, setM1{j});</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            </span><span style="color: rgb(14, 0, 255);">elseif </span><span >j == length(setM1)</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                fprintf(</span><span style="color: rgb(170, 4, 249);">' and %s'</span><span >, setM1{j});</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            </span><span style="color: rgb(14, 0, 255);">else</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                fprintf(</span><span style="color: rgb(170, 4, 249);">', %s'</span><span >, setM1{j});</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'\n'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'The production of lactate after optimization is %.2f \n'</span><span >, lactFluxM1);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'The growth rate after optimization is %.2f \n'</span><span >, growthRateM1);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf([</span><span style="color: rgb(170, 4, 249);">'The production of other products such as ethanol, formate, succinate and acetate are ' </span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                 </span><span style="color: rgb(170, 4, 249);">'%.1f, %.1f, %.1f and %.1f, respectively. \n'</span><span >], etohFluxM1, formFluxM1, succFluxM1, acetFluxM1);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'...Performing coupling analysis...\n'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        [type, maxGrowth, maxProd, minProd] = analyzeOptKnock(model, setM1, </span><span style="color: rgb(170, 4, 249);">'EX_lac__D_e'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'The solution is of type: %s\n'</span><span >, type);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf(</span><span style="color: rgb(170, 4, 249);">'The maximun growth rate given the optKnock set is %.2f\n'</span><span >, maxGrowth);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        fprintf([</span><span style="color: rgb(170, 4, 249);">'The maximun and minimun production of lactate given the optKnock set is ' </span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                 </span><span style="color: rgb(170, 4, 249);">'%.2f and %.2f, respectively \n\n'</span><span >], minProd, maxProd);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        singleProductionEnvelope(model, setM1, </span><span style="color: rgb(170, 4, 249);">'EX_lac__D_e'</span><span >, biomass, </span><span style="color: rgb(170, 4, 249);">'savePlot'</span><span >, 1, </span><span style="color: rgb(170, 4, 249);">'showPlot'</span><span >, 1, </span><span style="color: rgb(14, 0, 255);">...</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >                                 </span><span style="color: rgb(170, 4, 249);">'fileName'</span><span >, [</span><span style="color: rgb(170, 4, 249);">'lact_ex2_' </span><span >num2str(nIter)], </span><span style="color: rgb(170, 4, 249);">'outputFolder'</span><span >, </span><span style="color: rgb(170, 4, 249);">'OptKnockResults'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">else</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">if </span><span >nIter == 1</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            fprintf(</span><span style="color: rgb(170, 4, 249);">'optKnock was not able to found an optKnock set\n'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">else</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >            fprintf(</span><span style="color: rgb(170, 4, 249);">'optKnock was not able to found additional optKnock sets\n'</span><span >);</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >        </span><span style="color: rgb(14, 0, 255);">break</span><span >;</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    </span><span style="color: rgb(14, 0, 255);">end</span></span></div></div><div class="inlineWrapper"><div  class = 'S7'><span style="white-space: normal"><span >    nIter = nIter + 1;</span></span></div></div><div class="inlineWrapper outputs"><div  class = 'S8'><span style="white-space: normal"><span style="color: rgb(14, 0, 255);">end</span></span></div><div  class = 'S9'><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="376ACB4E" data-testid="output_151" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing optKnock analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="94F054C9" data-testid="output_152" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">optKnock found a optKnock set of large 4 composed by </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="16FF713F" data-testid="output_153" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">HEX1</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="0A5E6600" data-testid="output_154" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">, PGI</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="AAF034CD" data-testid="output_155" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">, PTAr</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="7DABCF4A" data-testid="output_156" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> and TKT1</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="3D4C7B1C" data-testid="output_157" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of lactate after optimization is 17.99 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="7A8E165C" data-testid="output_158" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The growth rate after optimization is 0.12 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="B2C92C32" data-testid="output_159" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of other products such as ethanol, formate, succinate and acetate are 0.0, 0.7, 0.0 and 0.1, respectively. </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="D7C48C2D" data-testid="output_160" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing coupling analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="7E583CFD" data-testid="output_161" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The solution is of type: non unique</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="862ECA9C" data-testid="output_162" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun growth rate given the optKnock set is 0.09</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="C4E2B78E" data-testid="output_163" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun and minimun production of lactate given the optKnock set is 0.00 and 18.62, respectively </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="F9812349" data-testid="output_164" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing optKnock analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="5FD64CC8" data-testid="output_165" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">optKnock found a optKnock set of large 5 composed by </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="DAFAAB55" data-testid="output_166" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">GLCabcpp</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="A6FA4F14" data-testid="output_167" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">, PGI</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="FF65B60B" data-testid="output_168" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">, PTAr</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="5EC95B6C" data-testid="output_169" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">, PYK</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="BBD494C7" data-testid="output_170" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> and TKT1</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="01CFFCF0" data-testid="output_171" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of lactate after optimization is 17.99 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="FBCA0714" data-testid="output_172" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The growth rate after optimization is 0.12 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="F925C189" data-testid="output_173" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of other products such as ethanol, formate, succinate and acetate are 0.0, 0.7, 0.0 and 0.1, respectively. </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="5F2132F1" data-testid="output_174" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing coupling analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="7274C5C3" data-testid="output_175" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The solution is of type: non unique</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="030841D0" data-testid="output_176" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun growth rate given the optKnock set is 0.09</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="91389086" data-testid="output_177" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun and minimun production of lactate given the optKnock set is 0.00 and 18.62, respectively </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="D879FF44" data-testid="output_178" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing optKnock analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="4367F5EE" data-testid="output_179" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">optKnock found a optKnock set of large 4 composed by </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="B7C151F2" data-testid="output_180" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">GLCabcpp</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="3A77FD4D" data-testid="output_181" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">, PGI</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="DBEE46F7" data-testid="output_182" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">, PTAr</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="F6DCCA1A" data-testid="output_183" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> and TKT1</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="5692BD97" data-testid="output_184" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of lactate after optimization is 17.99 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="8A95E432" data-testid="output_185" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The growth rate after optimization is 0.12 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="19FEB0E5" data-testid="output_186" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of other products such as ethanol, formate, succinate and acetate are 0.0, 0.7, 0.0 and 0.1, respectively. </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="0315BBBF" data-testid="output_187" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing coupling analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="68D545C8" data-testid="output_188" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The solution is of type: non unique</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="DC3A3502" data-testid="output_189" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun growth rate given the optKnock set is 0.09</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="EAFE076B" data-testid="output_190" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun and minimun production of lactate given the optKnock set is 0.00 and 18.62, respectively </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="0FADBFDA" data-testid="output_191" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing optKnock analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="23983B0D" data-testid="output_192" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">optKnock found a optKnock set of large 6 composed by </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="6DA461ED" data-testid="output_193" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">ACKr</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="CE3BA5D7" data-testid="output_194" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">, ALCD2x</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="359CE527" data-testid="output_195" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">, GLCabcpp</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="EBE4DD00" data-testid="output_196" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">, PGI</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="081B9E3E" data-testid="output_197" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">, PYK</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="7F849818" data-testid="output_198" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> and TKT1</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="9EAA24C1" data-testid="output_199" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of lactate after optimization is 17.99 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="C4140B51" data-testid="output_200" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The growth rate after optimization is 0.12 </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="ADB0C640" data-testid="output_201" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The production of other products such as ethanol, formate, succinate and acetate are 0.0, 0.7, 0.0 and 0.1, respectively. </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="F4B1FF95" data-testid="output_202" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">...Performing coupling analysis...</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="A79F8B95" data-testid="output_203" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The solution is of type: growth coupled non unique</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="F97A7DA0" data-testid="output_204" data-width="420" data-height="18" data-hashorizontaloverflow="false" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun growth rate given the optKnock set is 0.09</div></div><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement scrollableOutput" uid="894553A7" data-testid="output_205" data-width="420" data-height="18" data-hashorizontaloverflow="true" style="width: 450px; max-height: 261px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">The maximun and minimun production of lactate given the optKnock set is 10.38 and 18.62, respectively </div></div><div class="inlineElement eoOutputWrapper embeddedOutputsFigure" uid="3FB26673" data-testid="output_206" style="width: 450px;"><div class="figureElement"><img class="figureImage figureContainingNode" src="" style="width: 560px;"></div></div><div class="inlineElement eoOutputWrapper embeddedOutputsFigure" uid="6BF3A688" data-testid="output_207" style="width: 450px;"><div class="figureElement"><img class="figureImage figureContainingNode" src="" style="width: 560px;"></div></div><div class="inlineElement eoOutputWrapper embeddedOutputsFigure" uid="D1009E29" data-testid="output_208" style="width: 450px;"><div class="figureElement"><img class="figureImage figureContainingNode" src="" style="width: 560px;"></div></div><div class="inlineElement eoOutputWrapper embeddedOutputsFigure" uid="D8F82DF6" data-testid="output_209" style="width: 450px;"><div class="figureElement"><img class="figureImage figureContainingNode" src="" style="width: 560px;"></div></div></div></div><div class="inlineWrapper"><div  class = 'S15'><span style="white-space: normal"><span >cd(currectDirectory);</span></span></div></div></div><h2  class = 'S1'><span>TIMING</span></h2><ol  class = 'S4'><li  class = 'S5'><span>Example 1 ~ 1-2 minutes</span></li><li  class = 'S5'><span>Example 2 ~ 1-2 minutes</span></li><li  class = 'S5'><span>Example 3 ~ 1-2 minutes</span></li><li  class = 'S5'><span>Example 4 ~ 1-2 minutes</span></li></ol><h2  class = 'S1'><span>TROUBLESHOOTING</span></h2><div  class = 'S2'><span>1) If the algorithm takes a long time to find a solution, it is possible that the search space is too large. You can reduce the search space using a smaller set of reactions in the input variable "</span><span style=' font-style: italic;'>selectedRxnList</span><span>". </span></div><div  class = 'S2'><span>2) The default number of deletions used by optKnock is 5. If the algorithm is returning more deletions than what you want, you can change the number of deletions using the input variable "</span><span style=' font-style: italic;'>numDel</span><span>".</span></div><div  class = 'S2'><span>3) optKnock could find a solution that it is not useful for you. For example, you may think that a solution is very obvious or that it breaks some important biological contraints. If optKnock found a solution that you don't want to find, use the input variable "</span><span style=' font-style: italic;'>prevSolutions</span><span>" to prevent that solution to be found. </span></div><h2  class = 'S1'><span>ANTICIPATED RESULTS</span></h2><div  class = 'S2'><span>The optKnock algorithm will find sets of reactions that, when removed from the model, will improve the production of the metabolite of interest (e.g., succinate and lactate). In this tutorial, once optKnock finds a solution, then the type of solution is determined (if the product is coupled with biomass formation or not). Some of the sets will generate a coupled solution, i.e., the production rate will increase as biomass formation increases. For these kind of reactions a plot will be generated using the function </span><span style=' font-style: italic;'>singleProductionEnvelope</span><span> and will be saved in the folder </span><span style=' font-style: italic;'>tutorials/optKnock/optKnockResults</span><span>.</span></div><div  class = 'S2'><span>When you find a solution with OptKnock, you should always verify the minumum and maximum production rate using the function </span><span style=' font-style: italic;'>analizeOptKnock</span><span>. </span></div><h2  class = 'S3'><span>References</span></h2><div  class = 'S2'><span>[1] Burgard, A. P., Pharkya, P. &amp; Maranas, C. D. (2003). OptKnock: A Bilevel Programming Framework for Identifying Gene Knockout Strategies for Microbial Strain Optimization. Biotechnology and Bioengineering, 84(6), 647–657. http://doi.org/10.1002/bit.10803.</span></div><div  class = 'S2'><span>[2] Orth, J. D., Conrad, T. M., Na, J., Lerman, J. A., Nam, H., Feist, A. M., &amp; Palsson, B. Ø. (2011). A comprehensive genome‐scale reconstruction of Escherichia coli metabolism—2011.</span><span> </span><span style=' font-style: italic;'>Molecular systems biology</span><span>,</span><span> </span><span style=' font-style: italic;'>7</span><span>(1), 535.</span></div>
<br>
<!-- 
##### SOURCE BEGIN #####
%% OptKnock Tutorial
%% Author: Sebastián N. Mendoza,  Center for Mathematical Modeling, University of Chile. snmendoz@uc.cl
%% *Reviewer(s): Thomas Pfau, Sylvian Arreckx, Laurent Heirendt, Ronan Fleming, John Sauls, Anne Richelle*
%% *INTRODUCTION:*
% OptKnock is an algorithm suggesting the genetic manipulation that lead to 
% the overproduction of a specified metabolite [1]. Opknock pinpoints which set 
% of reactions to to remove (i.e. delettion of the genes associated to these reactions) 
% from a metabolic network to obtain a mutant that will produce a particular target 
% of interest at a higher rate than the wild-type strain. 
% 
% For example, imagine that we would like to increase the production of succinate 
% or lactate in _Escherichia coli_. Which are the knock-outs needed to increase 
% the production of these products? We will approach these problems in this tutorial.
%% MATERIALS & EQUIPMENT
%% 
% # MATLAB
% # A solver for Mixed Integer Linear Programming (MILP) problems.Use changeCobraSolver 
% to choose the solver for MILP problems (e.g., Gurobi).
%% PROCEDURE
% The proceduce consists on the following steps: 
% 
% 1) Constrain the model.
% 
% 2) Define the set of reactions that will be used to search knockouts. Note 
% : only reactions in this set will be deleted. 
% 
% 3) Define the number of reactions to be deleted, the target reaction and some 
% constraints to be accomplish.
% 
% 4) Run optKnock. 
% 
% *TIMING:* This task should take from a few seconds to a few hours depending 
% on the size of your reconstruction.
% 
% Verify that cobratoolbox has been initialized and that the solver has been 
% set.

global TUTORIAL_INIT_CB;
if ~isempty(TUTORIAL_INIT_CB) && TUTORIAL_INIT_CB==1
    initCobraToolbox(false) % false, as we don't want to update
end

changeCobraSolver('gurobi','all');
fullPath = which('tutorial_optKnock');
folder = fileparts(fullPath);
currectDirectory = pwd;
cd(folder);

%% 
% Load the model of E. coli [2].

modelFileName = 'iJO1366.mat';
modelDirectory = getDistributedModelFolder(modelFileName); %Look up the folder for the distributed Models.
modelFileName= [modelDirectory filesep modelFileName]; % Get the full path. Necessary to be sure, that the right model is loaded
model = readCbModel(modelFileName);

biomass = 'BIOMASS_Ec_iJO1366_core_53p95M';
%% 
% Define the maximum number of solutions to find (i.e., maximum number of remvable 
% reactions that lead to the overproduction of the metabolite of interest)

threshold = 5;
%% 
% Define the set of reactions that will be used to search knockouts. Note : 
% only reactions in this set will be deleted

selectedRxnList = {'GLCabcpp'; 'GLCptspp'; 'HEX1'; 'PGI'; 'PFK'; 'FBA'; 'TPI'; 'GAPD'; ...
                   'PGK'; 'PGM'; 'ENO'; 'PYK'; 'LDH_D'; 'PFL'; 'ALCD2x'; 'PTAr'; 'ACKr'; ...
                   'G6PDH2r'; 'PGL'; 'GND'; 'RPI'; 'RPE'; 'TKT1'; 'TALA'; 'TKT2'; 'FUM'; ...
                   'FRD2'; 'SUCOAS'; 'AKGDH'; 'ACONTa'; 'ACONTb'; 'ICDHyr'; 'CS'; 'MDH'; ...
                   'MDH2'; 'MDH3'; 'ACALD'};

%% 
% Constraint the model with biological assumptions

% prespecified amount of glucose uptake 10 mmol/grDW*hr
model = changeRxnBounds(model, 'EX_glc__D_e', -10, 'b');

% Unconstrained uptake routes for inorganic phosphate, sulfate and
% ammonia
Exchange={'EX_o2_e';'EX_pi_e';'EX_so4_e'; 'EX_nh4_e'};
Bounds=[0;-1000;-1000;-1000];
model = changeRxnBounds(model, Exchange, Bounds, 'l');

% Enable secretion routes  for acetate, carbon dioxide, ethanol, formate, lactate
% and succinate
Exchange={'EX_ac_e';'EX_co2_e';'EX_etoh_e';'EX_for_e';'EX_lac__D_e';'EX_succ_e'};
Bounds=[1000;1000;1000;1000;1000;1000];
model = changeRxnBounds(model, Exchange, Bounds, 'u');

% Constrain the phosphotransferase system
model = changeRxnBounds(model, 'GLCabcpp', -1000, 'l');
model = changeRxnBounds(model, 'GLCptspp', -1000, 'l');
model = changeRxnBounds(model, 'GLCabcpp', 1000, 'u');
model = changeRxnBounds(model, 'GLCptspp', 1000, 'u');
model = changeRxnBounds(model, 'GLCt2pp', 0, 'b');

%% 
% Then, calculates the production of metabolites before running optKnock.

% determine succinate production and growth rate
fbaWT = optimizeCbModel(model);
succFluxWT = fbaWT.x(strcmp(model.rxns, 'EX_succ_e'));
etohFluxWT = fbaWT.x(strcmp(model.rxns, 'EX_etoh_e'));
formFluxWT = fbaWT.x(strcmp(model.rxns, 'EX_for_e'));
lactFluxWT = fbaWT.x(strcmp(model.rxns, 'EX_lac__D_e'));
acetFluxWT = fbaWT.x(strcmp(model.rxns, 'EX_ac_e'));
growthRateWT = fbaWT.f;
fprintf('The production of succinate before optimization is %.1f \n', succFluxWT);
fprintf('The growth rate before optimization is %.1f \n', growthRateWT);
fprintf(['The production of other products such as ethanol, formate, lactate and'...
         'acetate are %.1f, %.1f, %.1f and %.1f, respectively. \n'], ...
        etohFluxWT, formFluxWT, lactFluxWT, acetFluxWT);
%% 
% *I) EXAMPLE 1 : SUCCINATE OVERPRODUCTION*
% 
% *Aim:* *finding optKnock reactions sets of size 2 for increasing production 
% of succinate*

fprintf('\n...EXAMPLE 1: Finding optKnock sets of size 2 or less...\n\n')
% Set optKnock options
% The exchange of succinate will be the objective of the outer problem
options = struct('targetRxn', 'EX_succ_e', 'numDel', 2);
% We will impose that biomass be at least 50% of the biomass of wild-type
constrOpt = struct('rxnList', {{biomass}},'values', 0.5*fbaWT.f, 'sense', 'G');
% We will try to find 10 optKnock sets of a maximun length of 2
previousSolutions = cell(10, 1);
contPreviousSolutions = 1;
nIter = 1;
while nIter < threshold
    fprintf('...Performing optKnock analysis...\n')
    if isempty(previousSolutions{1})
        optKnockSol = OptKnock(model, selectedRxnList, options, constrOpt);
    else
        optKnockSol = OptKnock(model, selectedRxnList, options, constrOpt, previousSolutions, 1);
    end
    
    % determine succinate production and growth rate after optimization
    succFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_succ_e'));
    growthRateM1 = optKnockSol.fluxes(strcmp(model.rxns, biomass));
    etohFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_etoh_e'));
    formFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_for_e'));
    lactFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_lac__D_e'));
    acetFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_ac_e'));
    setM1 = optKnockSol.rxnList;
    
    if ~isempty(setM1)
        previousSolutions{contPreviousSolutions} = setM1;
        contPreviousSolutions = contPreviousSolutions + 1;
        %printing results
        fprintf('optKnock found a optKnock set of large %d composed by ', length(setM1));
        for j = 1:length(setM1)
            if j == 1
                fprintf('%s', setM1{j});
            elseif j == length(setM1)
                fprintf(' and %s', setM1{j});
            else
                fprintf(', %s', setM1{j});
            end
        end
        fprintf('\n');
        fprintf('The production of succinate after optimization is %.2f \n', succFluxM1);
        fprintf('The growth rate after optimization is %.2f \n', growthRateM1);
        fprintf(['The production of other products such as ethanol, formate, lactate and acetate are' ...
                 '%.1f, %.1f, %.1f and %.1f, respectively. \n'], etohFluxM1, formFluxM1, lactFluxM1, acetFluxM1);
        fprintf('...Performing coupling analysis...\n');
        [type, maxGrowth, maxProd, minProd] = analyzeOptKnock(model, setM1, 'EX_succ_e');
        fprintf('The solution is of type: %s\n', type);
        fprintf('The maximun growth rate given the optKnock set is %.2f\n', maxGrowth);
        fprintf(['The maximun and minimun production of succinate given the optKnock set is ' ...
                 '%.2f and %.2f, respectively \n\n'], minProd, maxProd);
        if strcmp(type, 'growth coupled')
            singleProductionEnvelope(model, setM1, 'EX_succ_e', biomass, 'savePlot', 1, 'showPlot', 1, ...
                                     'fileName', ['succ_ex1_' num2str(nIter)], 'outputFolder', 'OptKnockResults');
        end,
    else
        if nIter == 1
            fprintf('optKnock was not able to found an optKnock set\n');
        else
            fprintf('optKnock was not able to found additional optKnock sets\n');
        end
        break;
    end
    nIter = nIter + 1;
end
%% 
% *II) EXAMPLE 2: SUCCINATE OVERPRODUCTION*
% 
% *Aim : finding optKnock reactions sets of size 3 for increasing production 
% of succinate*

fprintf('\n...EXAMPLE 1: Finding optKnock sets of size 3...\n\n')
% Set optKnock options
% The exchange of succinate will be the objective of the outer problem
options = struct('targetRxn', 'EX_succ_e', 'numDel', 3);
% We will impose that biomass be at least 50% of the biomass of wild-type
constrOpt = struct('rxnList', {{biomass}}, 'values', 0.5*fbaWT.f, 'sense', 'G');
% We will try to find 10 optKnock sets of a maximun length of 3
nIter = 1;
while nIter < threshold
    fprintf('...Performing optKnock analysis...')
    if isempty(previousSolutions{1})
        optKnockSol = OptKnock(model, selectedRxnList, options, constrOpt);
    else
        optKnockSol = OptKnock(model, selectedRxnList, options, constrOpt, previousSolutions);
    end
    
    % determine succinate production and growth rate after optimization
    succFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_succ_e'));
    growthRateM1 = optKnockSol.fluxes(strcmp(model.rxns, biomass));
    etohFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_etoh_e'));
    formFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_for_e'));
    lactFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_lac__D_e'));
    acetFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_ac_e'));
    setM1 = optKnockSol.rxnList;
    
    if ~isempty(setM1)
        previousSolutions{contPreviousSolutions} = setM1;
        contPreviousSolutions=contPreviousSolutions + 1;
        %printing results
        fprintf('optKnock found a optKnock set of large %d composed by ',length(setM1));
        for j = 1:length(setM1)
            if j == 1
                fprintf('%s',setM1{j});
            elseif j == length(setM1)
                fprintf(' and %s',setM1{j});
            else
                fprintf(', %s',setM1{j});
            end
        end
        fprintf('\n');
        fprintf('The production of succinate after optimization is %.2f \n', succFluxM1);
        fprintf('The growth rate after optimization is %.2f \n', growthRateM1);
        fprintf(['The production of other products such as ethanol, formate, lactate and acetate are ' ...
                 '%.1f, %.1f, %.1f and %.1f, respectively. \n'], etohFluxM1, formFluxM1, lactFluxM1, acetFluxM1);
        fprintf('...Performing coupling analysis...\n');
        [type, maxGrowth, maxProd, minProd] = analyzeOptKnock(model, setM1, 'EX_succ_e');
        fprintf('The solution is of type: %s\n', type);
        fprintf('The maximun growth rate given the optKnock set is %.2f\n', maxGrowth);
        fprintf(['The maximun and minimun production of succinate given the optKnock set is ' ...
                 '%.2f and %.2f, respectively \n\n'], minProd, maxProd);
        if strcmp(type,'growth coupled')
            singleProductionEnvelope(model, setM1, 'EX_succ_e', biomass, 'savePlot', 1, 'showPlot', 1, ...
                                     'fileName', ['succ_ex2_' num2str(nIter)], 'outputFolder', 'OptKnockResults');
        end
    else
        if nIter == 1
            fprintf('optKnock was not able to found an optKnock set\n');
        else
            fprintf('optKnock was not able to found additional optKnock sets\n');
        end
        break;
    end
    nIter = nIter + 1;
end
%% 
% *III) EXAMPLE 3 : LACTATE OVERPRODUCTION*
% 
% *Aim: finding optKnock reactions sets of size 3 for increasing production 
% of lactate*

fprintf('\n...EXAMPLE 1: Finding optKnock sets of size 3...\n\n')
% Set optKnock options
% The exchange of lactate will be the objective of the outer problem
options = struct('targetRxn', 'EX_lac__D_e', 'numDel', 3);
% We will impose that biomass be at least 50% of the biomass of wild-type
constrOpt = struct('rxnList', {{biomass}}, 'values', 0.5*fbaWT.f, 'sense', 'G');
% We will try to find 10 optKnock sets of a maximun length of 6
previousSolutions = cell(100, 1);
contPreviousSolutions = 1;
nIter = 1;
while nIter < threshold
    fprintf('...Performing optKnock analysis...')
    if isempty(previousSolutions{1})
        optKnockSol = OptKnock(model, selectedRxnList, options, constrOpt);
    else
        optKnockSol = OptKnock(model, selectedRxnList, options, constrOpt, previousSolutions);
    end
    
    % determine lactate production and growth rate after optimization
    lactFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_lac__D_e'));
    growthRateM1 = optKnockSol.fluxes(strcmp(model.rxns, biomass));
    etohFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_etoh_e'));
    formFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_for_e'));
    succFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_succ_e'));
    acetFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_ac_e'));
    setM1 = optKnockSol.rxnList;
    
    if ~isempty(setM1)
        previousSolutions{contPreviousSolutions} = setM1;
        contPreviousSolutions=contPreviousSolutions + 1;
        %printing results
        fprintf('optKnock found a optKnock set of large %d composed by ',length(setM1));
        for j = 1:length(setM1)
            if j == 1
                fprintf('%s', setM1{j});
            elseif j == length(setM1)
                fprintf(' and %s', setM1{j});
            else
                fprintf(', %s', setM1{j});
            end
        end
        fprintf('\n');
        fprintf('The production of lactate after optimization is %.2f \n', lactFluxM1);
        fprintf('The growth rate after optimization is %.2f \n', growthRateM1);
        fprintf(['The production of other products such as ethanol, formate, succinate and acetate are ' ...
                 '%.1f, %.1f, %.1f and %.1f, respectively. \n'], etohFluxM1, formFluxM1, succFluxM1, acetFluxM1);
        fprintf('...Performing coupling analysis...\n');
        [type, maxGrowth, maxProd, minProd] = analyzeOptKnock(model, setM1, 'EX_lac__D_e');
        fprintf('The solution is of type: %s\n', type);
        fprintf('The maximun growth rate given the optKnock set is %.2f\n', maxGrowth);
        fprintf(['The maximun and minimun production of lactate given the optKnock set is ' ...
                 '%.2f and %.2f, respectively \n\n'], minProd, maxProd);
        singleProductionEnvelope(model, setM1, 'EX_lac__D_e', biomass, 'savePlot', 1, 'showPlot', 1, ...
                                 'fileName', ['lact_ex1_' num2str(nIter)], 'outputFolder', 'OptKnockResults');
    else
        if nIter == 1
            fprintf('optKnock was not able to found an optKnock set\n');
        else
            fprintf('optKnock was not able to found additional optKnock sets\n');
        end
        break;
    end
    nIter = nIter + 1;
end
%% 
% *IV) EXAMPLE 4 : LACTATE OVERPRODUCTION*
% 
% *Aim: finding optKnock reactions sets of size 6 for increasing production 
% of lactate*

fprintf('...EXAMPLE 3: Finding optKnock sets of size 6...\n')
% Set optKnock options
% The exchange of lactate will be the objective of the outer problem
options = struct('targetRxn', 'EX_lac__D_e', 'numDel', 6);
% We will impose that biomass be at least 50% of the biomass of wild-type
constrOpt = struct('rxnList', {{biomass}}, 'values', 0.5*fbaWT.f, 'sense', 'G');
% We will try to find 10 optKnock sets of a maximun length of 2
nIter = 1;
while nIter < threshold
    fprintf('...Performing optKnock analysis...')
    if isempty(previousSolutions{1})
        optKnockSol = OptKnock(model, selectedRxnList, options, constrOpt);
    else
        optKnockSol = OptKnock(model, selectedRxnList, options, constrOpt, previousSolutions);
    end
    
    % determine lactate production and growth rate after optimization
    lactFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_lac__D_e'));
    growthRateM1 = optKnockSol.fluxes(strcmp(model.rxns,biomass));
    etohFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_etoh_e'));
    formFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_for_e'));
    succFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_succ_e'));
    acetFluxM1 = optKnockSol.fluxes(strcmp(model.rxns, 'EX_ac_e'));
    setM1 = optKnockSol.rxnList;
    
    if ~isempty(setM1)
        previousSolutions{contPreviousSolutions} = setM1;
        contPreviousSolutions = contPreviousSolutions + 1;
        %printing results
        fprintf('optKnock found a optKnock set of large %d composed by ', length(setM1));
        for j = 1:length(setM1)
            if j == 1
                fprintf('%s', setM1{j});
            elseif j == length(setM1)
                fprintf(' and %s', setM1{j});
            else
                fprintf(', %s', setM1{j});
            end
        end
        fprintf('\n');
        fprintf('The production of lactate after optimization is %.2f \n', lactFluxM1);
        fprintf('The growth rate after optimization is %.2f \n', growthRateM1);
        fprintf(['The production of other products such as ethanol, formate, succinate and acetate are ' ...
                 '%.1f, %.1f, %.1f and %.1f, respectively. \n'], etohFluxM1, formFluxM1, succFluxM1, acetFluxM1);
        fprintf('...Performing coupling analysis...\n');
        [type, maxGrowth, maxProd, minProd] = analyzeOptKnock(model, setM1, 'EX_lac__D_e');
        fprintf('The solution is of type: %s\n', type);
        fprintf('The maximun growth rate given the optKnock set is %.2f\n', maxGrowth);
        fprintf(['The maximun and minimun production of lactate given the optKnock set is ' ...
                 '%.2f and %.2f, respectively \n\n'], minProd, maxProd);
        singleProductionEnvelope(model, setM1, 'EX_lac__D_e', biomass, 'savePlot', 1, 'showPlot', 1, ...
                                 'fileName', ['lact_ex2_' num2str(nIter)], 'outputFolder', 'OptKnockResults');
    else
        if nIter == 1
            fprintf('optKnock was not able to found an optKnock set\n');
        else
            fprintf('optKnock was not able to found additional optKnock sets\n');
        end
        break;
    end
    nIter = nIter + 1;
end
cd(currectDirectory);
%% TIMING
%% 
% # Example 1 ~ 1-2 minutes
% # Example 2 ~ 1-2 minutes
% # Example 3 ~ 1-2 minutes
% # Example 4 ~ 1-2 minutes
%% TROUBLESHOOTING
% 1) If the algorithm takes a long time to find a solution, it is possible that 
% the search space is too large. You can reduce the search space using a smaller 
% set of reactions in the input variable "_selectedRxnList_". 
% 
% 2) The default number of deletions used by optKnock is 5. If the algorithm 
% is returning more deletions than what you want, you can change the number of 
% deletions using the input variable "_numDel_".
% 
% 3) optKnock could find a solution that it is not useful for you. For example, 
% you may think that a solution is very obvious or that it breaks some important 
% biological contraints. If optKnock found a solution that you don't want to find, 
% use the input variable "_prevSolutions_" to prevent that solution to be found. 
%% ANTICIPATED RESULTS
% The optKnock algorithm will find sets of reactions that, when removed from 
% the model, will improve the production of the metabolite of interest (e.g., 
% succinate and lactate). In this tutorial, once optKnock finds a solution, then 
% the type of solution is determined (if the product is coupled with biomass formation 
% or not). Some of the sets will generate a coupled solution, i.e., the production 
% rate will increase as biomass formation increases. For these kind of reactions 
% a plot will be generated using the function _singleProductionEnvelope_ and will 
% be saved in the folder _tutorials/optKnock/optKnockResults_.
% 
% When you find a solution with OptKnock, you should always verify the minumum 
% and maximum production rate using the function _analizeOptKnock_. 
%% References
% [1] Burgard, A. P., Pharkya, P. & Maranas, C. D. (2003). OptKnock: A Bilevel 
% Programming Framework for Identifying Gene Knockout Strategies for Microbial 
% Strain Optimization. Biotechnology and Bioengineering, 84(6), 647–657. http://doi.org/10.1002/bit.10803.
% 
% [2] Orth, J. D., Conrad, T. M., Na, J., Lerman, J. A., Nam, H., Feist, A. 
% M., & Palsson, B. Ø. (2011). A comprehensive genome‐scale reconstruction of 
% Escherichia coli metabolism—2011. _Molecular systems biology_, _7_(1), 535.
##### SOURCE END #####
-->
</div></body></html>